﻿using System.Collections.Generic;
using Metro.Kashikoi.Service.Common.Entity;
using Metro.Kashikoi.ServiceContract.Item;

namespace Metro.Kashikoi.Service.Item.Business
{
    /// <summary>
    /// This class provides methods to manage the category.
    /// </summary>
    public interface ICategoryFacade
    {
        /// <summary>
        /// Creates the category.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="category">The category.</param>
        void CreateCategory(IUnitOfWork context, ColorCategory category);

        /// <summary>
        /// Updates the category.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="category">The category.</param>
        void UpdateCategory(IUnitOfWork context, ColorCategory category);

        /// <summary>
        /// Deletes the category.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="categoryId">The category id.</param>
        void DeleteCategory(IUnitOfWork context, int categoryId);

        /// <summary>
        /// Gets the category.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        ColorCategory GetCategory(IUnitOfWork context, int id);

        /// <summary>
        /// Gets all categories.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        IList<ColorCategory> GetAllCategories(IUnitOfWork context);
    }
}
